Muestreo y Análisis de Datos - Curso 2025/26
Universidad de Alicante
Dpto. de Fundamentos del Análisis Económico. Universidad de Alicante
Analizar datos suele implicar múltiples tablas
diferentes orígenes: ej., dptos. de empresa (personal, ventas, almacén)
almacenamiento más eficiente: elementos “similares” dentro de una tabla y diferentes entre ellas
Para poder combinar la información los datos deben ser relacionales: cada par de tablas están relacionadas mediante identificadores llamados claves
nycflights13 contiene varias tablas: el nombre de la compañía está “codificado” en flights y se puede encontrar en airlinescarrierTipos de claves:
Primaria (o interna): identifican de forma única cada observación en una tabla. Puede ser una sola variable (en planes) o múltiples (en weather)
Secundaria (o externa): señala a la clave primaria de otra tabla
Una clave primaria y una externa (asociada) en otra tabla forman una relación:
Operaciones que se pueden realizar con dos tablas: uniones de transformación, uniones de filtro y operaciones de conjunto
Añaden nuevas variables a una tabla desde filas coincidentes en otra.
cbind() o bind_columns(): nuevas columnas para filas en el mismo ordenby: ¿Cómo se emparejan las tablas?by = "varX" o, para varias, con by = c("varX", "varY")Si se omite el argumento by, se usan todas las variables en común. Esto no siempre es deseable: ej., año no es lo mismo en flights y planes
Columnas con el mismo nombre (ej., año) se desambigúan con un sufijo
by = c("x1" = "y1", "x2" = "y2") para emparejar la variable x1 en la primera tabla con la variable y1 en la segunda, y la variable x2 con y2inner_join(x, y) sólo incluye observaciones que coincidan en x y y.Cuando una fila no coincide en una unión externa, las nuevas variables se rellenan como valores ausentes
left_join(df1, df2): mantiene todas las observaciones en x, coincidan o no con la de y
right_join(df1, df2): mantiene todas las observaciones en y
full_join(df1, df2): incluye todas las observaciones de x e y
Filtra las observaciones de la tabla de la izquierda basándose en si coinciden o no con una observación de la otra tabla
Se tiene un subconjunto de las filas de la tabla de la izquierda
filter(), con tablas previamente resumidas, pero permiten filtrados complejos fácilmenteTrabajan con filas completas, comparando valores de cada variable.
Esperan que x e y tengan las mismas variables, y tratan las observaciones (filas) como elementos de un conjunto.
Útil cuando se quiere dividir un filtro complejo en piezas más simples.
df1 <- tibble(x = 1:2, y = c(1, 1))
df2 <- tibble(x = c(1,1), y = 1:2)
intersect(df1, df2) # solo filas tanto en df1 como en df2
union(df1, df2) # filas únicas en ambas tablas df1 y df2`
union_all(df1, df2) # todas las filas de df1 y df2, manteniendo duplicados
setdiff(df1, df2) # filas en df1, pero no en df2
setdiff(df2, df1)